With the advent of distributed computing systems, users have become accustomed to communicating and performing a variety of business, education and leisure transactions through a network of Internet-based web services systems. Often, communication errors occur between components of such systems that cause a failure of the desired transactions. In a typical web services system, one web services computing system sends one or more messages to a second web services computing system expecting responsive messages according to particular message protocols and according to particular timing schemes. The second web services computing system expects messages of a particular messaging protocol from the first system, and the second system is designed to respond to the first system according to defined messaging protocols and timing schemes.
In a simple and synchronized system of communication, very exact messaging protocols and messaging send/response timing schemes may be constructed so that very few communications errors occur. However, in a typical setting, communications between disparate web services computing systems are asynchronous where a given web services computing system may be designed to communicate with a number of other web services computing systems and where the timing of message receipt and response between systems may be subject to significant variation.
A number of typical web services communications errors between disparate web services computing systems are often encountered. A first error known as “deadlock” occurs when a process is blocked because a receiving computing system holds processing while waiting for a message that is never sent from a sending computing system. Another error often occurs when a computing system receives a message at an unexpected time and fails to process the message as if the message was never actually received by the computing system. Another type of error often occurs due to timing violations where, for example, a computing system sends a message in an incorrect ordering sequence. Another type of communications error often occurs when a computing system fails to handle a “time out” situation correctly where, for example, the system fails to perform a required function or send a required responsive message within a specified transmission or response time. Other communications errors occur when communications transport systems fail.
For example, a user may electronically communicate from a first web services computing system with a seller of goods. The seller web services computing system may, in turn, communicate with the web services computing system of a shipper of ordered/sold goods. If the user (buyer in this case) decides to cancel a purchased transaction, but the user's cancellation message to the seller is received by the seller web services computing system at an unexpected time, the seller web services computing system may fail to acknowledge the cancellation message, and thus the transaction may fail altogether, or an undesirable result may be produced.
Prior methods for testing the communications interactions between disparate computing systems include running exhaustive manual testing along many recognizable communications paths and sequences to attempt to encounter all possible errors. Unfortunately, such testing schemes are very time consuming and typically fail to discover many potential errors. According to other prior error detection systems, a model of the specification of a computing system executable process is prepared for each communicating system. A combined model is then prepared and checked against a model checking software application in an effort to discover errors that may occur when the disparate computing systems communicate. Unfortunately, such error testing systems are not accurate because such models are prepared from specifications of the individual computing system executable processes independent of the actual implementations of those executable processes. Typically, the implementation-level executable processes may be quite different from a manually produced specification (abstract) of each of the executable processes, particularly where the implementation-level executable processes tend to evolve over time as the processes are updated or otherwise modified. Moreover, preparation of such process models is time consuming and costly. Other prior systems have attempted to automatically generate models from executable processes so that the models may be used for model checking for potential communications errors. Unfortunately, such systems encounter great difficulty in automatically generating models from complex computing languages (e.g., C, C++) suitable for model checking for communications errors.
Accordingly, there is a need for improved methods and systems for error detection in web services systems. It is with respect to these and other considerations that the present invention has been made.